import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, 
                            QVBoxLayout, QTextEdit, QLabel)
from PyQt5.QtCore import Qt

class ReadOnlyTextEditExample(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
        
    def initUI(self):
        # 设置窗口基本属性
        self.setWindowTitle("可复制但禁止修改的多行文本框")
        self.setGeometry(100, 100, 600, 400)
        
        # 创建中心部件和布局
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        layout = QVBoxLayout(central_widget)
        
        # 添加说明标签
        label = QLabel("这是一个只读的多行文本框（可复制，不可修改）：")
        layout.addWidget(label)
        
        # 创建多行文本框
        self.text_edit = QTextEdit()
        
        # 设置为只读模式（关键属性）
        self.text_edit.setReadOnly(True)
        
        # 添加示例文本
        sample_text = """这是一段示例文本。
你可以选中这段文本并复制它（使用 Ctrl+C 或右键菜单），
但无法对其进行修改。

这种功能常用于展示日志、协议内容、帮助信息等
需要用户查看但不允许编辑的场景。
"""
        self.text_edit.setText(sample_text)
        
        # 设置文本框的一些样式（可选）
        self.text_edit.setMinimumHeight(200)
        self.text_edit.setStyleSheet("""
            QTextEdit {
                border: 1px solid #ccc;
                border-radius: 4px;
                padding: 8px;
                font-family: SimHei;
                font-size: 14px;
            }
        """)
        
        # 添加到布局
        layout.addWidget(self.text_edit)
        
        # 添加提示标签
        hint_label = QLabel("提示：选中内容后可使用 Ctrl+C 复制，或右键选择复制")
        hint_label.setAlignment(Qt.AlignCenter)
        hint_label.setStyleSheet("color: #666; font-size: 12px;")
        layout.addWidget(hint_label)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = ReadOnlyTextEditExample()
    window.show()
    sys.exit(app.exec_())
    